package com.zf.rabbitmq.consumer.listener.dead_letter;

import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
public class DeadLetterConsumer {

    /**
     * 消费 test_normal_queue 队列，这是正常队列，会产生死信
     * 可以用 Message 接收，也可以用 String 接收：
     * - 如果用 Message 接收，则获取的是 消息体（byte[]body） 和 消息的详细信息
     * - 如果用 String 接收消息，获取的其实是 Message 中 byte[]body 字节数组中的数据转换成的 String
     * - 可以两个都写，也可以只写一个，且没有顺序要求。
     */
    @RabbitListener(queues = {"test_ttl_queue"})
    public void consumeTestNormalQueue(Message message) {
        System.out.printf("test_ttl_queue 队列中的内容：%s\n Message：%s\n", new String(message.getBody()), message);
    }

    /**
     * 消费 test_dead_letter_queue 队列，这是死信队列
     * 可以用 Message 接收，也可以用 String 接收：
     * - 如果用 Message 接收，则获取的是 消息体（byte[]body） 和 消息的详细信息
     * - 如果用 String 接收消息，获取的其实是 Message 中 byte[]body 字节数组中的数据转换成的 String
     * - 可以两个都写，也可以只写一个，且没有顺序要求。
     */
    @RabbitListener(queues = {"test_dead_letter_queue"})
    public void consumeTestDeadLetterQueue(Message message) {
        System.out.printf("test_dead_letter_queue 队列中的内容：%s\n Message：%s\n", new String(message.getBody()), message);
    }
}
